package virtualapp

import (
	"net/http"

	"gitee.com/tomatomeatman/golang-repository/bricks2/model/msgentity"
)

/**
 * 初始化
 */
func init() {
	ControllerRegister("/:owner/:module/*fun", ControllerFunc, POST)
	ControllerRegister("/:owner/:module/*fun", ControllerFunc, GET)
}

type VirtualController struct {
}

func ControllerFunc(ctx Context) interface{} {
	owner := ctx.Param("owner")
	module := ctx.Param("module")
	fun := ctx.Param("fun")

	// 创建 map 用于存储所有参数
	params := make(map[string]interface{})

	// 获取路径参数（Path Parameters）
	pathParams := ctx.Params
	for _, p := range pathParams {
		params[p.Key] = p.Value
	}

	// 获取查询参数（Query Parameters）
	ctx.Request.ParseForm()
	for key, values := range ctx.Request.URL.Query() {
		if len(values) == 1 {
			params[key] = values[0]
		} else {
			params[key] = values
		}
	}

	// 可选：获取 POST 表单或 JSON 数据（如果需要）
	if ctx.Request.Method == http.MethodPost || ctx.Request.Method == http.MethodPut {
		var formData map[string]interface{}
		if err := ctx.ShouldBind(&formData); err == nil {
			for k, v := range formData {
				params[k] = v
			}
		}
	}

	service := CreateService(owner, module)

	bl, me := service.DoFund(ctx, fun, params)
	if bl {
		return me
	}

	return msgentity.Err(9803, "指定方法不能在此使用:", fun)

}
